/**
 * 
 */
package br.com.skynix.tcmc.controller.rh.funcionarios;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import javax.annotation.Resource;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import org.springframework.stereotype.Controller;

import br.com.skynix.tcmc.base.managedbeans.AbstractCRUDManagedBean;
import br.com.skynix.tcmc.base.spring.IServiceAuditavel;
import br.com.skynix.tcmc.model.rh.CategoriaFuncionario;
import br.com.skynix.tcmc.model.rh.Classe;
import br.com.skynix.tcmc.model.rh.EstadoCivilEnum;
import br.com.skynix.tcmc.model.rh.Funcionario;
import br.com.skynix.tcmc.model.rh.PosicaoFuncionario;
import br.com.skynix.tcmc.service.configuracao.rh.categorias_funcionarios.CategoriaFuncionarioService;
import br.com.skynix.tcmc.service.configuracao.rh.classes.ClasseService;
import br.com.skynix.tcmc.service.configuracao.rh.posicoes_funcionarios.PosicaoFuncionarioService;
import br.com.skynix.tcmc.service.rh.empresas.EmpresaService;
import br.com.skynix.tcmc.service.rh.funcionarios.FuncionarioService;

/**
 * @author davi
 * 
 */
@ManagedBean
@RequestScoped
@Controller
public class FuncionarioMB extends AbstractCRUDManagedBean<Funcionario> {
	@Resource
	private FuncionarioService funcionarioService;

	@Resource
	private EmpresaService empresaService;

	@Resource
	private ClasseService classeService;

	@Resource
	private CategoriaFuncionarioService categoriaFuncionarioService;

	@Resource
	private PosicaoFuncionarioService posicaoFuncionarioService;

	/**
	 * @param funcionarioService
	 */
	public FuncionarioMB() {
		setModeloPesquisa(new Funcionario());
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * br.com.skynix.tcmc.base.managedbeans.AbstractCRUDManagedBean#getService()
	 */
	@Override
	protected IServiceAuditavel<Funcionario> getService() {
		return funcionarioService;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see br.com.skynix.tcmc.base.managedbeans.AbstractCRUDManagedBean#
	 * getPathParaModuloCRUD()
	 */
	@Override
	protected String getPathParaModuloCRUD() {
		return formatPath("rh/funcionarios/funcionario_crud_view");
	}

	public List<Classe> getListaClasses() {
		List<Classe> classes = new ArrayList<Classe>();
		if (getModeloEdicao().getEmpresa() != null) {
			Classe classeModelo = new Classe();
			classeModelo.setEmpresa(getModeloEdicao().getEmpresa());
			classes = classeService.buscarPeloExemplo(classeModelo);
		}
		return classes;
	}

	public List<CategoriaFuncionario> getListaCategoriaFuncionario() {
		List<CategoriaFuncionario> categorias = new ArrayList<CategoriaFuncionario>();
		if (getModeloEdicao().getEmpresa() != null) {
			CategoriaFuncionario categoriaModelo = new CategoriaFuncionario();
			categoriaModelo.setEmpresa(getModeloEdicao().getEmpresa());
			categorias = categoriaFuncionarioService
					.buscarPeloExemplo(categoriaModelo);
		}
		return categorias;
	}

	public List<PosicaoFuncionario> getListaPosicaoFuncionario() {
		List<PosicaoFuncionario> posicoes = new ArrayList<PosicaoFuncionario>();
		if (getModeloEdicao().getEmpresa() != null
				&& getModeloEdicao().getCategoriaFuncionario() != null) {
			PosicaoFuncionario posicaoFuncionarioModelo = new PosicaoFuncionario();
			posicaoFuncionarioModelo.setEmpresa(getModeloEdicao().getEmpresa());
			posicaoFuncionarioModelo.setCategoriaFuncionario(getModeloEdicao()
					.getCategoriaFuncionario());
			posicoes = posicaoFuncionarioService
					.buscarPeloExemplo(posicaoFuncionarioModelo);
		}

		return posicoes;
	}

	public Collection<EstadoCivilEnum> getListaEstadoCivil() {
		return EstadoCivilEnum.listAll();
	}
}
